﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Landscape.Business.Entities
{
    public class Job
    {
        public Job()
        { this.ID = Guid.Empty; }

        public virtual Guid ID
        { get; set; }

        public virtual string Code
        { get; set; }

        public virtual string Title
        { get; set; }

        public virtual string Description
        { get; set; }

        public virtual int Periodicity
        { get; set; }

        public virtual JobLevel Level
        { get; set; }

        /// <summary>
        /// Units for the periodicity
        /// 1. Running Hours
        /// 2. Days
        /// 3. Months
        /// </summary>
        public virtual Periodicity PeriodicityUnit
        { get; set; }

        /// <summary>
        /// Priority of the job. Possible values
        /// 1. Normal
        /// 2. Moderate
        /// 3. Urgent
        /// </summary>
        public virtual string Priority
        { get; set; }

        public virtual JobType Type
        { get; set; }

        public virtual int JobVersion
        { get; set; }

        public virtual IList<string> Measurements
        { get; set; }

        public virtual IList<WorkOrder> Workorders
        { get; set; }

        public virtual IList<JobHistory> History
        { get; set; }

        public virtual IList<JobChangeRequest> ChangeRequests
        { get; set; }

        public virtual IList<FileAttachment> Attachments
        { get; set; }

        public virtual bool IsDeleted
        { get; set; }

        public virtual bool IsReleased
        { get; set; }

        public virtual DateTime? ReleasedDate
        { get; set; }

        public virtual Guid ReleasedBy
        { get; set; }

        public virtual Guid CreatedBy
        { get; set; }

        public virtual DateTime CreatedDate
        { get; set; }

        public virtual Guid UpdatedBy
        { get; set; }

        public virtual DateTime UpdatedDate
        { get; set; }
    }
}
